S-vpc 설정이 eks 액세스 엔드포인트에 미치는 영향

개요

1주차 - 테라폼으로 프로비저닝, 다양한 노드 활용해보기에서 이슈가 있었다.
나는 EKS 액세스엔드포인트에 대해서 혼용으로 설정을 했는데 이것이 제대로 반영이 되지 않은 것이다.
image.png
혹시나 했는데, 역시 퍼블릭 모드로 엔드포인트가 이어지고 있다.
혼용 모드임에도 제대로 원하는 동작이 이뤄지지 않고 있다는 뜻이다.
image.png
개판이네.. 애초에 노드에서 dns 쿼리도 퍼블릭 ip가 돌아오고 있다.

트러블슈팅

문서를 찾아보니, enableDnsHostname 관련 옵션을 설정해야 한다는 것이 단서로 보인다.[1]
다시 설정을 진행해보려는데, 관련한 설정을 넣는 값이 없다.
image.png
faq 문서의 이 부분이 무슨 말인가 했는데, 애초에 기본적으로 이 테라폼 모듈은 노드 조인을 시킬 때 퍼블릭 엔드포인트를 활용하게 돼있다는 것이었나보다.
흠.. 내부 dns 설정을 안 바꿔준다니.
현 버전의 모듈로 설정을 하려는 사람은 꼭 알고 있어야만 하는 이슈라고 할 수 있겠다.

eks를 프라이빗 엔드포인트 모드로 업데이트

일단 완전 프라이빗으로 바꿔보자.
완전히 바꿔버리면 니가 뭘 할 수 있는데 아 ㅋㅋ
image.png
이러한 변경은 eks 클러스터 변경 사항으로 이력이 남는다.
eksctl로 할 때보다 조금 더 빠르게 5분만에 업데이트가 완료됐다.
image.png
이제야 비로소 내부 dns 쿼리가 정상적으로 이뤄진다.
아마 이 상태에서 다시 public을 혼용하게 하면 내가 원하는 대로 동작할 것이라 생각한다.
image.png
아니다. 다시 퍼블릭 액세스를 허용하자마자 곧바로 내부에서도 퍼블릭 ip를 받게 된다.
이 이야기 대로라면, 테라폼으로는 혼용 모드를 사용할 수 없다는 말이 된다.

vpc 업데이트

image.png
문서에 나와있기로, 프라이빗 모드를 사용하기 위해서는 위 세팅들이 돼야 한다고 했다.
확인해보니, 아래 dnsHostname 옵션이 체크가 되어있지 않았다.
간단하게 vpc 쪽 문서도 참고했다.[2]
이 옵션은 퍼블릭 ip가 있는 인스턴스의 경우 퍼블릭 dns를 받을 수 있도록 하는 옵션이다.
image.png
문서를 보면, 프라이빗 호스팅 영역에 대한 설명이 있다.
이게 split horizon dns를 지원하는 방법이다.
image.png
Amazon Route53에서는 이렇게 퍼블릭, 프라이빗 호스팅 존을 생성할 수 있으며 프라이빗의 경우에는 vpc를 지정해줄 수 있다.
근데 이 기능을 사용하기 위해서 전제되는 것이 위 두 기능의 활성화이다.
image.png
이걸 설정하고 처음에는 변화가 없었으나, 혹시 dns 캐시가 남았나 기다렸다가 다시 시도해보니 이렇게 변경이 됐다.

결론

클러스터 액세스 엔드포인트 설정을 하더라도 vpc 설정이 제대로 이뤄져 있지 않다면 원하는 대로 반영이 되지 않는다.
스플릿 호라이즌 dns 기능이 route 53의 프라이빗 호스팅 영역을 통해 활성화되기 때문에, 해당 기능을 온전히 이용하기 위해서는 vpc에서 dns 관련 설정을 전부 true로 해줘야 한다.

관련 문서

이름 noteType created
EKS, ECS 비교 knowledge 2024-11-03
Amazon Fargate knowledge 2024-11-03
eksctl knowledge 2025-02-06
VPC CNI knowledge 2025-02-11
Karpenter knowledge 2025-03-04
Amazon VPC Lattice knowledge 2025-04-23
EKS Automode knowledge 2025-04-23
AWS Gateway API Controller knowledge 2025-04-27
EKS 사전 준비 project 2025-02-14
1주차 - EKS 준비 project 2025-02-01
1주차 - 테라폼으로 프로비저닝, 다양한 노드 활용해보기 project 2025-02-05
2주차 - 테라폼 세팅 project 2025-02-09
2주차 - 네트워크 project 2025-02-25
3주차 - 스토리지 project 2025-02-16
4주차 - 관측 가능성 project 2025-02-23
3주차 - 다양한 노드 그룹 project 2025-02-24
4주차 - opentelemetry 데모 project 2025-03-01
4주차 - 네트워크 추가 project 2025-03-01
5주차 - 오토스케일링 project 2025-03-02
6주차 - 시큐리티 project 2025-03-09
7주차 - 모드, 노드 project 2025-03-16
8주차 - CICD project 2025-03-23
9주차 - 업그레이드 project 2025-03-30
10주차 - 시크릿 관리 project 2025-04-11
11주차 - ml infra project 2025-04-17
12주차 - aws lattice, gateway api project 2025-04-23
1W - EKS 설치 및 액세스 엔드포인트 변경 실습 published 2025-02-03
2W - 테라폼으로 환경 구성 및 VPC 연결 published 2025-02-11
2W - EKS VPC CNI 분석 published 2025-02-11
2W - ALB Controller, External DNS published 2025-02-15
3W - kubestr과 EBS CSI 드라이버 published 2025-02-21
3W - EFS 드라이버, 인스턴스 스토어 활용 published 2025-02-22
4W - 번외 AL2023 노드 초기화 커스텀 published 2025-02-25
4W - EKS 모니터링과 관측 가능성 published 2025-02-28
4W - 프로메테우스 스택을 통한 EKS 모니터링 published 2025-02-28
5W - HPA, KEDA를 활용한 파드 오토스케일링 published 2025-03-07
5W - Karpenter를 활용한 클러스터 오토스케일링 published 2025-03-07
6W - PKI 구조, CSR 리소스를 통한 api 서버 조회 published 2025-03-15
6W - api 구조와 보안 1 - 인증 published 2025-03-15
6W - api 보안 2 - 인가, 어드미션 제어 published 2025-03-16
6W - EKS api 서버 접근 보안 published 2025-03-16
6W - EKS 파드에서 AWS 리소스 접근 제어 published 2025-03-16
7W - 쿠버네티스의 스케줄링, 커스텀 스케줄러 설정 published 2025-03-22
7W - EKS Automode published 2025-03-22
7W - EKS Fargate published 2025-03-22
8W - 아르고 워크플로우 published 2025-03-30
8W - 아르고 롤아웃 published 2025-03-30
8W - 아르고 CD published 2025-03-30
8W - CICD published 2025-03-30
9W - EKS 업그레이드 published 2025-04-02
10W - Vault를 활용한 CICD 보안 published 2025-04-16
11주차 - EKS에서 FSx, Inferentia 활용하기 published 2025-05-11
11W - EKS에서 FSx, Inferentia 활용하기 published 2025-04-18
12W - VPC Lattice 기반 gateway api published 2025-04-27
E-파드 마운팅 recursiveReadOnly topic/explain 2025-02-27
S-vpc 설정이 eks 액세스 엔드포인트에 미치는 영향 topic/shooting 2025-02-07
T-마운트 전파 Bidirectioal topic/temp 2025-02-28

참고


  1. https://docs.aws.amazon.com/ko_kr/eks/latest/userguide/cluster-endpoint.html#cluster-endpoint-private ↩︎

  2. https://docs.aws.amazon.com/ko_kr/vpc/latest/userguide/vpc-dns-updating.html ↩︎